package com.leetcode.greedy;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author Dennis Li
 * @date 2020/7/23 20:24
 */
public class ReconstructQueue_406 {

    public int[][] reconstructQueue(int[][] people) {
        if(people.length == 0 || people[0].length == 0) return new int[0][0];
        // 先按照身高从大到小排列，身高相等，按照序号从小到大进行排序
        Arrays.sort(people, ((o1, o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0]));
        List<int[]> list = new ArrayList<>();
        // 将数组按序进行插入，插入的位置如果有数据，那么会将这个数据置后，然后在这个位置进行插入
        Arrays.stream(people).forEach(ints -> list.add(ints[1], ints));
        return list.toArray(new int[0][]);
    }

}
